In a remote presentation session, a client computer and a server computer communicate across a communications network. The client sends the server locally-received input, such as mouse cursor movements and keyboard presses. In turn, the server receives this input and performs processing associated with it, such as executing an application in a user session. When the server performs processing that results in output, such as graphical output or sound, the server sends this output to the client for presentation. In this manner, applications appear to a user of the client to execute locally on the client when they, in fact, execute on the server.
The amount of graphics data that is a server typically generates in a remote presentation session may exceed the amount of communications network bandwidth available between the server and the client. In view of this restriction of bandwidth, a server will typically compress the graphics data before sending it to the client. In some embodiments, the server will also encode the graphics data as a video stream before sending it to the client. There are many problems with known techniques for compressing and encoding graphics data as a video stream in a remote presentation session, some of which are well known.